Computing devices and communication networks can be utilized to exchange content and other information. For example, a first computing device with an integrated or peripheral camera can communicate with a second computing device that also has an integrated or peripheral camera. The first computing device can generate a video stream using its camera and transmit the video stream to the second computing device, which can present the video stream on a display screen. The second computing device can also generate a video stream using its camera and transmit the video stream to the first computing device, which can present the video stream on a display screen. This exchange of video streams between devices may be referred to as a “video call.” In a common application, users of the different computing devices position the video cameras to capture video of their own faces. The exchange of video streams thus allows the users to see each other's face while they have a conversation.
Some video call systems, when executing an application on a local device (e.g., the first computing device) present the video stream from a remote device (e.g., the second computing device) in a large or substantially full-screen window. The application also presents the video stream from camera of the local device in a smaller or “picture-in-picture” window. The video stream from the camera of the local device is typically mirrored (e.g., inverted across a vertical axis) such that the user of the local device sees his own face as if he were looking in a mirror. The video stream from the remote device is typically presented without mirroring such that the user of the local device sees the other user's face as if he were sitting across from the other user.
From the perspective of a user of video call system, the system's performance may be defined in terms of the overall system latency, video quality, and ability exchange video of what the user would like to see and/or share with another user.